Image decoding device

ABSTRACT

An input control unit collectively sends a plurality of pieces of variable length code data. A primary analysis processing unit processes a first piece of variable length code data, recognizes zero run information, group number information, and overhead bit information relating thereto, and outputs them to a frequency conversion unit. A continuous analysis processing unit processes one or more pieces of variable length code data subsequent to the first piece of variable length code data. In the case of variable length code data targeted for a predetermined process, the continuous analysis processing unit recognizes zero run information, group number information, and overhead bit information relating thereto, and output them to the frequency conversion unit. In the case of not the variable length code data targeted for the predetermined process, the continuous analysis processing unit discards this and subsequent pieces of data.

TECHNICAL FIELD

The present invention relates to an image decoding device configured todecode image data (encoded data) compressed using a Huffman code.

BACKGROUND ART

Conventionally, in a field handling images such as photographs, an imageencoding device and an image decoding device have been used. The imageencoding device is configured to compress and encode image data, whichis original data, in accordance with the JPEG (Joint PhotographicExperts Group) standard in order to reduce a load or the like incommunication. The image decoding device is configured to expand theencoded compressed image data to reconstruct the original image.

Generally, the image encoding device includes a DCT unit, a quantizationunit, a zigzag scan unit, and a Huffman encoding unit. The DCT unitperforms the following process: image data, converted from RGB colordata to YUV luminance color difference data, is divided into blocks eachhaving 8×8 pixels; and for each divided block, image data correspondingto each pixel is converted into a frequency component (referred to asDCT (Discrete Cosine Transform) coefficient) so as to generatecoefficient data including one DC (Direct Current) coefficient and 63 AC(Alternating Current) coefficients.

The quantization unit performs a quantization process by dividing eachof the 8×8 coefficient data (numerical values), which have beengenerated for the respective blocks by the DCT unit, by a correspondingnumerical value in a quantization table (8×8 numerical values) preparedin advance. The zigzag scan unit performs a process to generate 64pieces of coefficient data arranged in a straight line (that is, arrayedone-dimensionally) by scanning the 8×8 pieces of coefficient data, whichhave been quantized by the quantization unit for each block, in a zigzagmanner from the DC coefficient across the AC coefficients. The Huffmanencoding unit performs a process to generate and output encoded dataobtained by encoding, using a Huffman code, the coefficient dataone-dimensionally arrayed by the zigzag scan unit for each block.

FIG. 7 shows a data structure of general encoded data (JPEG stream)generated by the image encoding device. As shown in FIG. 7, this encodeddata has a structure in which a front marker group, encoded compressedimage data, and an EOI (End Of Image) marker are arranged sequentially.The front marker group is constituted of various types of markers. TheEOI marker defines the end of the encoded data.

The front marker group includes: a SOI (Start Of Image) marker thatdefines the head of the encoded data; a DQT (Define Quantization Table)marker that defines the quantization table; a SOF (Start Of Frame)marker that defines the start of a frame and defines an image size; aDHT (Define Huffman Table) marker that defines the Huffman code table;and a SOS (Start Of Scan) marker that defines that compressed image dataexists subsequent to the SOS marker.

Moreover, the compressed image data is represented by representing thecoefficient data for each block by a Huffman code and a variable lengthcode subsequent thereto. The Huffman code encodes zero run informationand group number information. The variable length code has an additionalbit handled as a unit. The additional bit represents a coefficientvalue. The compressed image has such a structure that the variablelength code data are connected continuously.

On the other hand, as shown in FIG. 8, image decoding device 100includes a Huffman decoding unit 110, a reverse zigzag scan unit 130, andequantization unit 140, and an IDCT unit 150 (see Patent Literature 1described below). Generally, as shown in FIG. 9, Huffman decoding unit110 includes a code input unit 111, an internal buffer 112, a frontmarker analysis unit 113, a final marker analysis unit 114, a codeanalysis unit 115, and a frequency conversion unit 125.

Code input unit 111 performs a process to receive the encoded data fromoutside and store it into internal buffer 112. The encoded data is sentfrom internal buffer 112 to each of front marker analysis unit 113,final marker analysis unit 114, and code analysis unit 115. Front markeranalysis unit 113 extracts the front marker group included in theencoded data and sends the extracted front marker group to reversezigzag scan unit 130. Final marker analysis unit 114 performs a processto detect the EOI marker in the encoded data sent from internal buffer112, and send a resulting detection signal to reverse zigzag scan unit130.

As shown in FIG. 10, code analysis unit 115 is constituted of an inputcontrol unit 116, a codeword detection unit 117, anumber-of-zero-runs/group number recognition unit 118, and an additionalbit output unit 119.

Input control unit 116 controls sending of the encoded data receivedfrom internal buffer 112. Specifically, input control unit 116sequentially sends data relating to the markers. For pieces of variablelength code data subsequent to the SOS marker, input control unit 116sends an amount of data slightly exceeding the maximum amount of datathat a piece of variable length code data, which is handled as a unit,can have. Input control unit 116 sends, to internal buffer 112, a shiftsignal corresponding to the bit length of the piece of variable lengthcode data processed by codeword detection unit 117,number-of-zero-runs/group number recognition unit 118, and additionalbit output unit 119.

Accordingly, in internal buffer 112, the data (processed piece ofvariable length code data) corresponding to the bit length correspondingto the received shift signal is deleted from the forefront of the storeddata and the next piece of variable length code data is shifted to theforefront side, thereby bringing the next piece of variable length codedata to the forefront. It should be noted that internal buffer 112 has asufficient storage capacity to store a plurality of pieces of variablelength code data. When the processed piece of variable length code datais deleted and the next piece of variable length code data is brought tothe forefront, internal buffer 112 sequentially receives, from outside,subsequent encoded data under control of code input unit 111.

Codeword detection unit 117 performs a process to: recognize (detect)data relating to a codeword, i.e., Huffman code for each piece ofvariable length code data based on the Huffman code table recognizedfrom the DHT marker of the received front marker group; and send therecognized Huffman code data and the piece of variable length code datato number-of-zero-runs/group number recognition unit 118.

Based on the Huffman code data detected by codeword detection unit 117,number-of-zero-runs/group number recognition unit 118 recognizes thenumber of zero runs and group number defined by the Huffman code, andoutputs the recognized number of zero runs, the recognized group number,and the variable length code data to additional bit output unit 119.

Additional bit output unit 119 performs a process to: recognize theadditional bit length corresponding to the group number, based on thedata relating to the group number received fromnumber-of-zero-runs/group number recognition unit 118; and based on thereceived variable length code data, recognize, as the additional bit,the data subsequent to the Huffman code data and corresponding to theadditional bit length; and output, to frequency conversion unit 125, thedata relating to the number of zero runs and the data corresponding tothe recognized additional bit.

Additional bit output unit 119 sends, to input control unit 116, asignal relating to a bit length obtained by adding the additional bitlength to the bit length of the processed variable length code data,i.e., the bit length of the Huffman code detected by codeword detectionunit 117. Input control unit 116 sends, to internal buffer 112, theshift signal relating to the bit length of the variable length code dataas described above.

Frequency conversion unit 125 reconstructs, for each block, theone-dimensional array of quantized coefficient data (DCT coefficientdata) based on the data relating to the number of zero runs and theadditional bit both sent from code analysis unit 115, and outputs it toreverse zigzag scan unit 130.

Thus, in this Huffman decoding unit 110, the marker information of thefront marker group included in the encoded data is analyzed by markeranalysis unit 113 and is sent to reverse zigzag scan unit 130. Then, theone-dimensional array of coefficient data is reconstructed from thecompressed image data for each block by code analysis unit 115 andfrequency conversion unit 125, and is sent to reverse zigzag scan unit130. When the whole of the encoded data is processed and the EOI markeris detected by final marker analysis unit 114, the marker information ofthe EOI marker is sent from final marker analysis unit 114 to reversezigzag scan unit 130.

Reverse zigzag scan unit 130 performs, onto the coefficient data decodedby Huffman decoding unit 110, a process reverse to the above-describedzigzag scan, thereby performing a process to convert the one-dimensionalarray of coefficient data into an 8×8 two-dimensional array ofcoefficient data. Dequantization unit 140 performs a process to multiplyeach of the 8×8 coefficient data output and sent from reverse zigzagscan unit 130, by a corresponding numerical value of the quantizationtable defined by the DQT marker also sent from reverse zigzag scan unit130, thereby converting it into dequantized coefficient data. IDCT(Inverse Discrete Cosine Transform) unit 150 performs a process toconvert the coefficient data converted by dequantization unit 140, into8×8-pixel YUV luminance color difference data. The YUV luminance colordifference data is finally converted into RGB color data.

CITATION LIST Patent Literature

PTL 1: Japanese Patent Laying-Open No. 7-99579

SUMMARY OF INVENTION Technical Problem

As shown in FIG. 11, regarding the Huffman codes for defining thenumbers of zero runs and the group numbers, 12 Huffman codes, i.e., 12group numbers of 0 to B, are required for the DC coefficients, whereasfor the AC coefficients, 162 Huffman codes are required, i.e.,combinations of 16 numbers of zero runs of 0 to F and 10 group numbersof 1 to A plus a combination of the number of zero runs of 0 and a groupnumber of 0 and a combination of the number of zero runs of F and agroup number of 0. 174 Huffman codes are required in total.

Therefore, in codeword detection unit 117 of conventional image decodingdevice 100 described above, when detecting pieces of Huffman code datafrom pieces of variable length code data, a coincidence detectionprocess is performed repeatedly 174 times to detect a group of datacoinciding with the pieces of Huffman code data by sequentiallycomparing (i) each of the pieces of data included in the group andsequentially arranged from the forefront of the variable length codedata with (ii) the 174 pieces of Huffman code data.

However, according to the knowledge of the present inventors, whencompressing image data at a general compression ratio, frequencies ofoccurrence of Huffman codes that encode coefficient data based on an8×8-pixel block as a unit are not the same among all the Huffman codes.Frequencies of occurrence of a plurality of certain Huffman codes arehigh.

Therefore, when the above-described coincidence detection process isperformed for the Huffman codes with predetermined high frequencies ofoccurrence, the Huffman code data in the variable length code data canbe detected in a short detection processing time at a considerably highprobability. By employing such a process, the processing time incodeword detection unit 116 can be shortened.

Moreover, when image decoding device 100 is implemented by an electroniccircuit, the process in code analysis unit 115 of Huffman decoding unit110 needs to be done within 1 clock; however, the process in codeanalysis unit 115 can be done within 1 clock with a sufficient margin.Therefore, also in this sense, conventionally, there is a room forshortening the processing time in code analysis unit 115.

The present invention has been made in view of the above circumstance,and has an object to provide an image decoding device that can shorten adecoding time as the whole by shortening a processing time in a Huffmandecoding unit.

Solution to Problem

In order to solve the above-described problem, the present invention isdirected to an image decoding device including a Huffman decoding unitconfigured to decode compressed image data, the compressed image databeing compressed by a Huffman encoding process, the compressed imagedata having a structure in which Huffman codes and pieces of variablelength code data are connected continuously, each Huffman code encodingzero run information and group number information, the pieces ofvariable length code data being subsequent to the respective Huffmancodes, each of the pieces of variable length code data having anadditional bit handled as a unit, wherein

the Huffman decoding unit include

a code analysis unit configured to analyze the pieces of variable lengthcode data sequentially received, and sequentially recognize and outputpieces of zero run information and group number information relating tothe pieces of variable length code data, and

a frequency conversion unit configured to sequentially generate piecesof coefficient information based on the pieces of zero run informationand group number information sequentially output from the code analysisunit, and output the pieces of coefficient information, and

the code analysis unit includes

an input control unit configured to collectively send a plurality ofpieces of variable length code data,

a primary analysis processing unit configured to

-   -   process a first piece of received variable length code data        without applying a restriction,    -   recognize zero run information, group number information, and        additional bit information relating to the first piece of        received variable length code data, and    -   output the recognized zero run information and additional bit        information to the frequency conversion unit, and

a continuous analysis processing unit configured to

process one or more pieces of variable length code data subsequent tothe piece of variable length code data processed by the primary analysisprocessing unit,

-   -   when a corresponding piece of variable length code data in the        one or more pieces of variable length code data is variable        length code data targeted for a predetermined process, perform a        process to recognize zero run information, group number        information, and additional bit information relating to the        corresponding piece of variable length code data in the one or        more pieces of variable length code data, and output the        recognized zero run information and additional bit information        to the frequency conversion unit, and    -   when the corresponding piece of variable length code data in the        one or more pieces of variable length code data is not the        variable length code data targeted for the predetermined        process, perform a process to discard the corresponding and        subsequent pieces of variable length code data in the one or        more pieces of variable length code data, and then send, to the        input control unit, a signal for sending data subsequent to the        variable length code data having been through the recognition        process.

According to this image decoding device, the plurality of pieces ofvariable length code data are collectively received by way of the inputcontrol unit. First, the first piece of received variable length codedata is processed in the primary analysis processing unit without aparticularly restriction, thereby recognizing the zero run information,group number information, and additional bit information relatingthereto. The recognized zero run information and additional bitinformation are output to the frequency conversion unit.

Specifically, for the total of 174 Huffman codes, i.e., 12 Huffman codesset for the above-described DC coefficient data and 162 Huffman codesset for the AC coefficients, the primary analysis processing unitdetects which Huffman code in the first piece of received variablelength code data coincides with, thereby recognizing the Huffman code(codeword) in the variable length code data.

From the recognized Huffman code, the primary analysis processing unitrecognizes the number of zero runs and group number (in the case of theDC coefficient, only the group number) corresponding to this Huffmancode. After recognizing the additional bit length from the recognizedgroup number, the primary analysis processing unit recognizes theadditional bit in the variable length code data from this additional bitlength. The primary analysis processing unit outputs, to the frequencyconversion unit, respective pieces of information relating to therecognized number of zero runs and the recognized additional bit.

Next, the continuous analysis processing unit processes the one or morepieces of variable length code data subsequent to the piece of variablelength code data processed by the primary analysis processing unit. Whenthe corresponding piece of variable length code data in the one or morepieces of the variable length code data is the variable length code datatargeted for the predetermined process, the zero run information, groupnumber information, and additional bit information relating to thecorresponding piece of variable length code data in the one or morepieces of variable length code data are recognized sequentially, and therecognized zero run information and additional bit information areoutput to the frequency conversion unit. On the other hand, when thecorresponding piece of variable length code data in the one or morepieces of the variable length code data is not the variable length codedata targeted for the predetermined process, the corresponding andsubsequent pieces of variable length code data in the one or more piecesof the variable length code data are discarded.

After performing these processes, the continuous analysis processingunit performs the process to send, to the input control unit, the signalfor sending the data subsequent to the variable length code data havingbeen through the recognition process.

Here, the pieces of variable length code data targeted for the processin this continuous analysis processing unit are set experientially inadvance. As described above, when the image data is compressed at ageneral compression ratio, the frequencies of occurrence of the Huffmancodes each encoding the coefficient data based on an 8×8-pixel block asa unit are not the same among all the Huffman codes. The frequencies ofoccurrence of a plurality of certain Huffman codes are high.

Therefore, the pieces of variable length code data highly likely to bethe targets for the process in the continuous analysis processing unitare pieces of variable length code data relating to the Huffman codeswith high frequencies of occurrence as described above. In view of this,only the pieces of variable length code data relating to the Huffmancodes, i.e., zero run information and group number information, selectedfrom those with such high frequencies of occurrence are processed in thecontinuous analysis processing unit.

In this way, the process of detecting the Huffman codes in the pieces ofvariable length code data can be performed in a short period of time.That is, if all the pieces of variable length code data are the targetsfor the process as described above, the coincidence detection processfor the 174 Huffman codes need to be performed to detect a Huffman code;however, by narrowing down the targets for the process to the pieces ofvariable length code data relating to the specific Huffman codes withhigh frequencies of occurrence, a coincidence detection time fordetecting the Huffman codes can be shortened, whereby a time requiredfor the process can be shortened without a waste in the process.

Moreover, since each piece of variable length code data not targeted forthe process in the continuous analysis processing unit is securelyprocessed again in the primary analysis processing unit, the processingtime can be shortened while ensuring that the compressed image data issecurely decoded.

Thereafter, the sending process by the input control unit and theprocess by the primary analysis processing unit and the continuousanalysis processing unit are performed repeatedly in the same manner asdescribed above until the processing of the collection of compressedimage data is finished.

In the frequency conversion unit, based on the pieces of zero runinformation and additional bit information output sequentially from thecode analysis unit, the pieces of coefficient information aresequentially generated.

It should be noted that the continuous analysis processing unit in thepresent invention may be configured to sequentially process theplurality of pieces of variable length code data, and apply a morestrict restriction on a piece of variable length code data located morebackward in the plurality of pieces of variable length code data withregard to the variable length code data targeted for the predeterminedprocess, i.e., gradually narrow down the variable length code datatargeted for the process.

The image decoding device is generally constituted of an electroniccircuit. In this case, the series of processes in the input controlunit, the primary analysis processing unit, and the continuous analysisprocessing unit included in the code analysis unit need to be completedwithin 1 clock. By gradually shortening the time required for thecoincidence detection process in the continuous analysis processingunit, the number of pieces of variable length code data that can beprocessed within 1 clock can be increased, whereby the processing timecan be shortened.

Advantageous Effects of Invention

As described above, according to the present invention, since thetargets for the process in the continuous analysis processing unit canbe narrowed down to the pieces of variable length code data relating tothe specific Huffman codes with high frequencies of occurrence, thecoincidence detection time for detecting the Huffman codes can beshortened, thereby shortening the time required for the process withouta waste in the process.

Moreover, since each piece of variable length code data not targeted forthe process in the continuous analysis processing unit is securelyprocessed again in the primary analysis processing unit, the processingtime can be shortened while ensuring that the compressed image data issecurely decoded.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram showing a schematic configuration of an imagedecoding device according to one embodiment of the present invention.

FIG. 2 is a block diagram showing a configuration of a Huffman decodingunit according to the present embodiment.

FIG. 3 is a block diagram showing a configuration of a code analysisunit according to the present embodiment.

FIG. 4 is an explanatory diagram for illustrating a process in the codeanalysis unit according to the present embodiment.

FIG. 5 is an explanatory diagram showing frequencies of occurrence ofthe numbers of zero runs and group numbers when image data iscompressed.

FIG. 6 is an explanatory diagram for illustrating a process in the codeanalysis unit according to the present embodiment.

FIG. 7 is an explanatory diagram showing a structure of encoded datagenerated by the image encoding device.

FIG. 8 is a block diagram showing a schematic configuration of aconventional image decoding device.

FIG. 9 is a block diagram showing a configuration of a conventionalHuffman decoding unit.

FIG. 10 is a block diagram showing a configuration of a conventionalcode analysis unit.

FIG. 11 is an explanatory drawing for illustrating a process in theconventional code analysis unit.

DESCRIPTION OF EMBODIMENTS

The following describes specific embodiments of the present inventionwith reference to figures. FIG. 1 is a block diagram showing a schematicconfiguration of an image decoding device according to the presentembodiment. As shown in FIG. 1, image decoding device 1 according to thepresent example is different from the above-described conventional imagedecoding device 100 shown in FIG. 8 only in the configuration of Huffmandecoding unit 10. Reverse zigzag scan unit 130, dequantization unit 140,and IDCT unit 150 are the same as those of conventional image decodingdevice 100. Therefore, the same components are given the same referencecharacters in FIG. 1 and are not described below in detail. Moreover,the encoded data (JPEG stream) handled in the present example has thesame data structure as that of the encoded data shown in FIG. 7.

Moreover, as shown in FIG. 2, Huffman decoding unit 10 of the presentexample is constituted of a code input unit 111, an internal buffer 112,a front marker analysis unit 113, a final marker analysis unit 114, acode analysis unit 20, and a frequency conversion unit 125; however,code input unit 111, internal buffer 112, front marker analysis unit113, final marker analysis unit 114, and frequency conversion unit 125have the same configurations as those in conventional image decodingdevice 100, and are therefore given the same reference characters andare not described in detail.

It should be noted that image decoding device 1 of the present exampleis implemented by hardware, such as an electronic device including anappropriate electronic circuit for performing each process.Alternatively, image decoding device 1 can be implemented by ageneral-purpose computer including a CPU, a ROM, a RAM, and the like.When implemented by a computer, respective functions of code input unit111, front marker analysis unit 113, final marker analysis unit 114,code analysis unit 20, frequency conversion unit 125, zigzag scan unit130, dequantization unit 140, and IDCT unit 150 are implemented bycomputer programs.

As shown in FIG. 3, code analysis unit 20 is constituted of an inputcontrol unit 21, a primary analysis processing unit 31, a secondaryanalysis processing unit 41, a tertiary analysis processing unit 51, anda quaternary analysis processing unit 61. Secondary analysis processingunit 41, tertiary analysis processing unit 51, and quaternary analysisprocessing unit 61 among them constitute a continuous analysisprocessing unit.

Input control unit 21 controls sending of encoded data received frominternal buffer 112. Specifically, input control unit 21 sequentiallysends the above-described data relating to the markers. For the piecesof variable length code data subsequent to the SOS marker, input controlunit 21 sends an amount of data including at least four pieces ofvariable length code data in consideration of a maximum data amount thata piece of variable length code data as a unit can have. Moreover, inputcontrol unit 21 sends, to internal buffer 112, a shift signalcorresponding to the bit length of the variable length code dataprocessed by each of primary analysis processing unit 31, secondaryanalysis processing unit 41, tertiary analysis processing unit 51, andquaternary analysis processing unit 61.

Primary analysis processing unit 31 is constituted of a codeworddetection unit 32, a number-of-zero-runs/group number recognition unit33, and an additional bit output unit 34. Secondary analysis processingunit 41 is constituted of a codeword detection unit 42, anumber-of-zero-runs/group number recognition unit 43, and an additionalbit output unit 44. Tertiary analysis processing unit 51 is constitutedof a codeword detection unit 52, a number-of-zero-runs/group numberrecognition unit 53, and an additional bit output unit 54. Quaternaryanalysis processing unit 61 is constituted of a codeword detection unit62, a number-of-zero-runs/group number recognition unit 63, and anadditional bit output unit 64. Each unit will be described as follows.

A. Primary Analysis Processing Unit 31

Based on a Huffman code table recognized from the DHT marker in theencoded data, codeword detection unit 32 performs a process to detectdata (hereinafter “Huffman code data”) relating to a Huffman code(codeword) in a first piece of received variable length code data.

On this occasion, as shown in FIG. 4, codeword detection unit 32recognizes Huffman code data existing in the first piece of variablelength code data by performing a coincidence detection (recognition)process with regard to 174 Huffman codes in total, specifically, 12Huffman codes for the DC coefficients, i.e., group numbers of 0 to B, aswell as 162 Huffman codes for the AC coefficients, i.e., combinations of16 numbers of zero runs of 0 to F and 10 group numbers of 1 to A plus acombination of the number of zero runs of 0 and a group number of 0 anda combination of the number of zero runs of F and a group number of 0.

Codeword detection unit 32 sends the detected Huffman code data and theplurality of pieces of received variable length code data tonumber-of-zero-runs/group number recognition unit 33.

Number-of-zero-runs/group number recognition unit 33 performs a processto:

based on the Huffman code data sent from codeword detection unit 32,recognize the number of zero runs and group number corresponding to theHuffman code data; then recognize the additional bit lengthcorresponding to the recognized group number; and send, to additionalbit output unit 34, data relating to the recognized number of zero runs,group number, and additional bit length, as well as the data relating tothe bit length of the Huffman code and the plurality of pieces ofvariable length code data, each of which is sent from codeword detectionunit 32.

Based on the data relating to the bit length of the Huffman code and theadditional bit length and sent from number-of-zero-runs/group numberrecognition unit 33, additional bit output unit 34 extracts, from thefirst piece of variable length code data, the data relating to theadditional bit corresponding to the additional bit length. Additionalbit output unit 34 performs a process to: send, to frequency conversionunit 125, the data relating to the number of zero runs and sent fromnumber-of-zero-runs/group number recognition unit 33, and the extracteddata relating to the additional bit; and send, to codeword detectionunit 42, the data relating to the bit length of the first piece ofvariable length code data, and the second and subsequent pieces ofvariable length code data with the first piece of variable length codedata being deleted.

B. Secondary Analysis Processing Unit 41

Based on the Huffman code table, codeword detection unit 42 performs aprocess to detect Huffman code data in the second piece of variablelength code data of the second and subsequent pieces of variable lengthcode data sent from additional bit output unit 34.

On this occasion, as shown in FIG. 4, codeword detection unit 42recognize Huffman code data existing in the second piece of variablelength code data by performing a coincidence detection process withregard to 19 Huffman codes in total for the AC coefficients,specifically, combinations of the number of zero runs of 0 and groupnumbers of 0 to 7, combinations of the number of zero runs of 1 andgroup numbers of 1 to 3, combinations of the number of zero runs of 2and group numbers of 1 to 2, combinations of the number of zero runs of3 and group numbers of 1 to 2, a combination of the number of zero runsof 4 and a group number of 1, a combination of the number of zero runsof 5 and a group number of 1, a combination of the number of zero runsof 6 and a group number of 1, and a combination of the number of zeroruns of 7 and a group number of 1.

When one of the 19 pieces of Huffman code data is detected, codeworddetection unit 42 sends the Huffman code data and the second andsubsequent pieces of received variable length code data tonumber-of-zero-runs/group number recognition unit 43. On the other hand,when none of the 19 pieces of Huffman code data is detected, codeworddetection unit 42 performs a process to: send, to input control unit 21,the data relating to the bit length of the first piece of variablelength code data and sent from additional bit output unit 34; anddiscard all the pieces of received data. Accordingly, subsequentprocesses are not performed.

It should be noted that when the data relating to the bit length of thefirst piece of variable length code data is received, input control unit21 sends, to internal buffer 112 as the shift signal, the receivedsignal relating to the bit length. In internal buffer 112, the data(processed piece of variable length code data) corresponding to the bitlength corresponding to the received shift signal is deleted from theforefront of the stored data, thereby bringing the next piece ofvariable length code data to the forefront.

From the Huffman code data sent from codeword detection unit 42,number-of-zero-runs/group number recognition unit 43 recognizes thenumber of zero runs and group number corresponding to the Huffman codedata. Then, number-of-zero-runs/group number recognition unit 43recognizes the additional bit length corresponding to the recognizedgroup number. Number-of-zero-runs/group number recognition unit 43sends, to additional bit output unit 44, the data relating to therecognized number of zero runs, group number, and additional bit length,the data relating to the bit length of the Huffman code and sent fromcodeword detection 42, and the second and subsequent pieces of variablelength code data.

Based on the data relating to the bit length of the Huffman code and theadditional bit length and sent from number-of-zero-runs/group numberrecognition unit 43, additional bit output unit 44 extracts, from thesecond piece of variable length code data, the data relating to theadditional bit corresponding to the additional bit length. Additionalbit output unit 44 sends, to frequency conversion unit 125, the datarelating to the number of zero runs and sent fromnumber-of-zero-runs/group number recognition unit 43 and the extracteddata relating to the additional bit. Additional bit output unit 44sends, to codeword detection unit 52, data relating to a total bitlength of the first and second pieces of variable length code data, andthe third and subsequent pieces of variable length code data with thesecond piece of variable length code data being deleted.

C. Tertiary Analysis Processing Unit 51

Based on the Huffman code table, codeword detection unit 52 performs aprocess to detect Huffman code data in the third piece of variablelength code data of the third and subsequent pieces of variable lengthcode data sent from additional bit output unit 44.

On this occasion, as shown in FIG. 4, codeword detection unit 52recognizes Huffman code data existing in the third piece of variablelength code data by performing a coincidence detection process withregard to 13 Huffman codes in total for the AC coefficients,specifically, combinations of the number of zero runs of 0 and groupnumbers of 0 to 7, combinations of the number of zero runs of 1 andgroup numbers of 1 to 2, a combination of the number of zero runs of 2and a group number of 1, a combination of the number of zero runs of 3and a group number of 1, and a combination of the number of zero runs of4 and a group number of 1.

When one of the 13 pieces of Huffman code data is detected, codeworddetection unit 52 sends the Huffman code data and the third andsubsequent pieces of received variable length code data tonumber-of-zero-runs/group number recognition unit 53. On the other hand,when none of the 13 pieces of Huffman code data is detected, codeworddetection unit 52 performs a process to: send, to input control unit 21,the data relating to the total bit length of the first and second piecesof variable length code data and sent from additional bit output unit44; and discard all the pieces of received data. Accordingly, subsequentprocesses are not performed.

When the data relating to the total bit length of the first and secondpieces of variable length code data is received, input control unit 21sends, to internal buffer 112 as the shift signal, the received signalrelating to the bit length. In internal buffer 112, the datacorresponding to the bit length corresponding to the received shiftsignal is deleted from the forefront of the stored data, therebybringing the next piece of variable length code data to the forefront.

From the Huffman code data sent from codeword detection unit 52,number-of-zero-runs/group number recognition unit 53 recognizes thenumber of zero runs and the group number corresponding to the Huffmancode data. Then, number-of-zero-runs/group number recognition unit 53recognizes the additional bit length corresponding to the recognizedgroup number. Number-of-zero-runs/group number recognition unit 53sends, to additional bit output unit 54, the data relating to therecognized number of zero runs, group number, and additional bit length,the data relating to the bit length of the Huffman code and sent fromcodeword detection 52, and the third and subsequent pieces of variablelength code data.

Based on the data relating to the bit length of the Huffman code and thedata relating to the additional bit length both sent fromnumber-of-zero-runs/group number recognition unit 53, additional bitoutput unit 54 extracts, from the third piece of variable length codedata, the data relating to the additional bit corresponding to theadditional bit length. Additional bit output unit 54 sends, to frequencyconversion unit 125, the data relating to the number of zero runs andsent from number-of-zero-runs/group number recognition unit 53 and theextracted data relating to the additional bit. Additional bit outputunit 54 sends, to codeword detection unit 62, data relating to a totalbit length of the first to third pieces of variable length code data,and the fourth and subsequent pieces of variable length code data withthe third piece of variable length code data being deleted.

D. Quaternary Analysis Processing Unit 61

Based on the Huffman code table, codeword detection unit 62 performs aprocess to detect Huffman code data in the fourth piece of variablelength code data of the fourth and subsequent pieces of variable lengthcode data sent from additional bit output unit 64.

On this occasion, as shown in FIG. 4, codeword detection unit 62recognizes Huffman code data existing in the fourth piece of variablelength code data by performing a coincidence detection process withregard to 11 Huffman codes in total for the AC coefficients,specifically, combinations of the number of zero runs of 0 and groupnumbers of 0 to 7, combinations of the number of zero runs of 1 andgroup numbers of 1 to 2, and a combination of the number of zero runs of2 and a group number of 1.

When one of the 11 pieces of Huffman code data is detected, codeworddetection unit 62 sends the Huffman code data and the fourth andsubsequent pieces of variable length code data tonumber-of-zero-runs/group number recognition unit 63. On the other hand,when none of the 11 pieces of Huffman code data is detected, codeworddetection unit 62 performs a process to: send, to input control unit 21,the data relating to the total bit length of the first to third piece ofvariable length code data and sent from additional bit output unit 54;and discard all the pieces of received data. Accordingly, subsequentprocesses are not performed.

When the data relating to the total bit length of the first to thirdpiece of variable length code data is received, input control unit 21sends, to internal buffer 112 as the shift signal, the received signalrelating to the bit length. In internal buffer 112, the datacorresponding to the bit length corresponding to the received shiftsignal is deleted from the forefront of the stored data, therebybringing the next piece of variable length code data to the forefront.

From the Huffman code data sent from codeword detection unit 62,number-of-zero-runs/group number recognition unit 63 recognizes thenumber of zero runs and group number corresponding to the Huffman codedata. Then, number-of-zero-runs/group number recognition unit 63recognizes the additional bit length corresponding to the recognizedgroup number. Number-of-zero-runs/group number recognition unit 63sends, to additional bit output unit 64, the data relating to therecognized number of zero runs, group number, and additional bit length,the data relating to the bit length of the Huffman code and sent fromcodeword detection 62, and the fourth and subsequent pieces of variablelength code data.

Based on the data relating to the bit length of the Huffman code and thedata relating to the additional bit length both sent fromnumber-of-zero-runs/group number recognition unit 43, additional bitoutput unit 64 extracts, from the fourth piece of variable length codedata, the data relating to the additional bit corresponding to theadditional bit length. Additional bit output unit 64 performs a processto: send, to frequency conversion unit 125, the data relating to thenumber of zero runs and sent from number-of-zero-runs/group numberrecognition unit 63 and the extracted data relating to the additionalbit; send, to input control unit 21, data relating to the total bitlength of the first to fourth pieces of variable length code data; anddiscard all the pieces of received data.

It should be noted that the above-described Huffman codes targeted forthe detection in respective codeword detection units 42, 52, 62 are setexperientially in advance. FIG. 5 shows frequencies of occurrence of thenumbers of zero runs and the group numbers for the AC coefficients, inother words, shows frequencies of occurrence of the Huffman codes, whenimage data is compressed at a general compression ratio of 20%. As shownin FIG. 5, the frequencies of occurrence of the numbers of zero runs andthe group numbers are not the same among all the combinations. Thefrequencies of occurrence of certain numbers of zero runs and certaingroup numbers relating to a plurality of certain combinations are high.

Specifically, as surrounded by a thick solid line in FIG. 5, when thenumber of zero runs is 0, the frequencies of occurrence of the groupnumbers of 0 to 7 are high, when the number of zero runs is 1, thefrequencies of occurrence of the group numbers of 1 to 3 are high, whenthe number of zero runs is 2 and 3, the frequencies of occurrence of thegroup numbers of 1 and 2 are high in each case, and when the number ofzero runs is 4, 5, 6, and 7, the frequency of occurrence of the groupnumber of 1 is high in each case.

Therefore, the pieces of variable length code data highly likely to bethe targets for the processes in secondary analysis processing unit 41,tertiary analysis processing unit 51, and quaternary analysis processingunit 61 are pieces of variable length code data relating to the Huffmancodes with high frequencies of occurrence as described above. In view ofthis, only the pieces of variable length code data relating to theHuffman codes, i.e., zero run information and group number information,selected from those with such high frequencies of occurrence areprocessed in each of secondary analysis processing unit 41, tertiaryanalysis processing unit 51, and quaternary analysis processing unit 61.

In this way, the process of detecting the Huffman codes in the pieces ofvariable length code data can be performed in a short period of time.That is, if all the pieces of variable length code data are targeted forthe processes, the coincidence detection process for the 174 Huffmancodes needs to be performed to detect a Huffman code as described above;however, by narrowing down the targets for the processes to the piecesof variable length code data relating to the specific Huffman codes withhigh frequencies of occurrence, a coincidence detection time fordetecting the Huffman codes can be shortened, whereby a time requiredfor the process can be shortened without a waste in the process.

Moreover, the pieces of variable length code data relating to the 19pieces of Huffman code data are targeted for the process in secondaryanalysis processing unit 41, the pieces of variable length code datarelating to the 13 pieces of Huffman code data are targeted for theprocess in tertiary analysis processing unit 51, and the pieces ofvariable length code data relating to the 11 pieces of Huffman code dataare targeted for the process in quaternary analysis processing unit 61.Since the targets for the processes are gradually narrowed down, theprocessing times become gradually shorter from the processing time insecondary analysis processing unit 41 to the processing time inquaternary analysis processing unit 61. Image decoding device 1 of thepresent example is generally constituted of an electronic circuit. Inthis case, the processes from input control unit 21 to additional bitoutput unit 64 of code analysis unit 20 need to be completed within 1clock. Therefore, by shortening the processing times gradually, thenumber of pieces of variable length code data that can be processedwithin 1 clock can be increased, whereby the processing time can beshortened.

Moreover, since each piece of variable length code data not targeted forthe processes in secondary analysis processing unit 41 to quaternaryanalysis processing unit 61 is securely processed again in primaryanalysis processing unit 31, the processing time can be shortened whileensuring that the compressed image data is securely decoded.

According to image decoding device 1 configured as described above inthe present example, under control of input control unit 21, the encodeddata is first sent from internal buffer 112, and an amount of dataincluding at least four pieces of variable length code data of thepieces of variable length code data subsequent to the SOS marker iscollectively sent. Such pieces of variable length code data are firstsent to and processed in primary analysis processing unit 31.

Specifically, in primary analysis processing unit 31, codeword detectionunit 32 performs a detection process onto the first piece of variablelength code data with regard to 174 Huffman codes so as to recognize theHuffman code data in the first piece of variable length code data. Then,the number of zero run and group number corresponding to the recognizedHuffman code data, as well as the additional bit length corresponding tothe group number are recognized by number-of-zero-runs/group numberrecognition unit 33. In additional bit output unit 34, based on the datarelating to the additional bit length, the data relating to theadditional bit corresponding to the additional bit length is extractedfrom the first piece of variable length code data. The data relating tothe number of zero runs and the extracted data relating to theadditional bit are sent from additional bit output unit 34 to frequencyconversion unit 125. The second and subsequent pieces of variable lengthcode data are sent to codeword detection unit 42 of secondary analysisprocessing unit 41.

Next, in codeword detection unit 42, the detection process is performedonto the second pieces of variable length code data with regard to the19 Huffman codes described above. When one of the 19 pieces of Huffmancode data is detected, the number of zero runs and the group numbercorresponding to the recognized Huffman code data as well as theadditional bit length corresponding to the group number are recognizedby number-of-zero-runs/group number recognition unit 43. In additionalbit output unit 44, based on the data relating to the additional bitlength, the data relating to the additional bit corresponding to theadditional bit length is extracted from the second piece of variablelength code data. The data relating to the number of zero runs and theextracted data relating to the additional bit are sent to frequencyconversion unit 125. The third and subsequent pieces of variable lengthcode data are sent to codeword detection unit 52 of tertiary analysisprocessing unit 51.

On the other hand, when none of the 19 pieces of Huffman code data isdetected in codeword detection unit 42, the data relating to the bitlength of the first piece of variable length code data and sent fromadditional bit output unit 34 is sent to input control unit 21, and thesubsequent processes are not performed. Input control unit 21 sends, tointernal buffer 112, the received signal relating to the bit length asthe shift signal. In internal buffer 112, the data corresponding to thebit length corresponding to the received shift signal is deleted.Accordingly, the next piece of variable length code data is brought tothe forefront.

Next, in codeword detection unit 52, the detection process is performedonto the third piece of variable length code data with regard to the 13Huffman codes described above. When one of the 13 pieces of Huffman codedata is detected, the number of zero runs and group number correspondingto the recognized Huffman code data, as well as the additional bitlength corresponding to the group number are recognized bynumber-of-zero-runs/group number recognition unit 53. In additional bitoutput unit 54, based on the data relating to the additional bit length,the data relating to the additional bit corresponding to the additionalbit length is extracted from the third piece of variable length codedata. The data relating to the number of zero runs and the extracteddata relating to the additional bit are sent to frequency conversionunit 125.

The fourth and subsequent pieces of variable length code data are sentto codeword detection unit 62 of quaternary analysis processing unit 61.

On the other hand, when none of the 13 pieces of Huffman code data isdetected in codeword detection unit 52, the data relating to the totalbit length of the first and second pieces of variable length code dataand sent from additional bit output unit 44 is sent to input controlunit 21, and the subsequent processes are not performed. Input controlunit 21 sends, to internal buffer 112, the received signal relating tothe bit length as the shift signal. In internal buffer 112, the datacorresponding to the bit length corresponding to the received shiftsignal is deleted. Accordingly, the next piece of variable length codedata is brought to the forefront.

Next, in codeword detection unit 62, the detection process is performedonto the fourth piece of variable length code data with regard to the 11Huffman codes described above. When one of the 11 pieces of Huffman codedata is detected, the number of zero runs and group number correspondingto the recognized Huffman code data as well as the additional bit lengthcorresponding to the group number are recognized bynumber-of-zero-runs/group number recognition unit 63. In additional bitoutput unit 64, based on the data relating to the additional bit length,the data relating to the additional bit corresponding to the additionalbit length is extracted from the fourth piece of variable length codedata. The data relating to the number of zero runs and the extracteddata relating to the additional bit are sent to frequency conversionunit 125. The data relating to the total bit length of the first tofourth pieces of variable length code data is sent to input control unit21.

On the other hand, when none of the 11 pieces of Huffman code data isdetected in codeword detection unit 62, the data relating to the totalbit length of the first to third pieces of variable length code data andsent from additional bit output unit 64 is sent to input control unit21, and the subsequent processes are not performed.

Input control unit 21 sends, to internal buffer 112, the received signalrelating to the bit length as the shift signal. In internal buffer 112,the data corresponding to the bit length corresponding to the receivedshift signal is deleted. Accordingly, the next piece of variable lengthcode data is brought to the forefront.

After the data including the at least four pieces of variable lengthcode data collectively sent is processed as described above, the sendingprocess by input control unit 21 and each process by primary analysisprocessing unit 31 to quaternary analysis processing unit 61 areperformed in the same manner repeatedly until the processing of thecollection of compressed image data is finished.

Thus, according to image decoding device 1, only the pieces of variablelength code data relating to the Huffman codes, i.e., zero runinformation and group number information, selected from those with highfrequencies of occurrence are processed in each of secondary analysisprocessing unit 41, tertiary analysis processing unit 51, and quaternaryanalysis processing unit 61 as described above. Hence, each of theprocesses for detecting the Huffman codes in secondary analysisprocessing unit 41, tertiary analysis processing unit 51, and quaternaryanalysis processing unit 61 can be performed in a short period of time.

FIG. 6 (a) shows the process in code analysis unit 115 of conventionalimage decoding device 100, whereas FIG. 6 (b) shows the process in codeanalysis unit 20 of image decoding device 1 of the present example.

As shown in FIG. 6 (a), in code analysis unit 115 of conventional imagedecoding device 100, the coincidence detection process for the 174Huffman codes needs to be performed in the Huffman code data detectionprocess, with the result that the detection process takes long time.Therefore, as shown in FIG. 6 (a), even though a series of processes ofa process (A) in codeword detection unit 117, a process (B) innumber-of-zero-runs/group number recognition unit 118, a process (C) inadditional bit output unit 119 and a process (D) in input control unit116 can be done within 1 clock, when a considerable amount of timeremains therein, the remaining time is completely wasted unless theseries of processes can be performed again within the remaining time.

On the other hand, in code analysis unit 20 of image decoding device 1of the present example, as shown in FIG. 6 (b), after the primaryanalysis process involving the coincidence detection process for the 174pieces of Huffman code data as in the conventional art, the secondary toquaternary analysis processes each with a processing time significantlyshorter than that of the primary analysis process can be performedwithin 1 clock. Hence, the four pieces of variable length code data canbe processed within 1 clock, whereby the process for image decoding inHuffman decoding unit 10 can be shortened remarkably as compared withthat in the conventional art.

It should be noted that according to a simple comparison in the numberof times of performing the coincidence detection process, the time of aprocess A₂ in codeword detection unit 42 of secondary analysisprocessing unit 41 is about 11/100 of the time of a process A₁(equivalent to conventional process A) in codeword detection unit 32 ofprimary analysis processing unit 31, the time of a process A₃ incodeword detection unit 52 of tertiary analysis processing unit 51 isabout 7/100 of the time of process A₁, and the time of a process A₄ incodeword detection unit 62 of quaternary analysis processing unit 61 isabout 6/10 of the time of process A₁.

Moreover, in code analysis unit 20 of the present example, the pieces ofvariable length code data targeted for the processes in secondaryanalysis processing unit 41 to quaternary analysis processing unit 61are narrowed down gradually and stepwisely. In this way, the processingtimes can become gradually shorter from the processing time of secondaryanalysis processing unit 41 to the processing time of quaternaryanalysis processing unit 61. Accordingly, the number of pieces ofvariable length code data that can be processed within 1 clock can beincreased more effectively, whereby the processing time can be furthershortened. It should be noted that a relation among the above-describedprocessing times are as follows: A₁>A₂>A₃>A₄.

Moreover, since each of the pieces of the variable length code data nottargeted for the processes in secondary analysis processing unit 41 toquaternary analysis processing unit 61 is securely processed again inprimary analysis processing unit 31, the processing time can beshortened while ensuring that the compressed image data is securelydecoded.

Although one embodiment of the present invention has been describedabove, specific embodiments of the present invention are not limitedthereto at all.

For example, in the above example, the continuous analysis processingunit is constituted of the three processing units, i.e., secondaryanalysis processing unit 41, tertiary analysis processing unit 51, andquaternary analysis processing unit 61; however, the number of theanalysis processing units included in the continuous analysis processingunit is not limited to this. The continuous analysis processing unit maybe constituted of one or more analysis processing units. That is, anyconfiguration may be employed as long as time shortening can be attainedas intended.

Moreover, the manner of narrowing down the targets for the processes inthe continuous analysis processing unit (secondary analysis processingunit 41, tertiary analysis processing unit 51, and quaternary analysisprocessing unit 61 in the above example) is not limited to the one inthe above example, and can be set appropriately to attain timeshortening as intended.

REFERENCE SIGNS LIST

-   1: image decoding device-   10: Huffman decoding unit-   20: code analysis unit-   21: input control unit-   31: primary analysis processing unit-   32: code analysis unit-   33: number-of-zero-runs/group number recognition unit-   34: additional bit output unit-   41: secondary analysis processing unit-   42: code analysis unit-   43: number-of-zero-runs/group number recognition unit-   44: additional bit output unit-   51: tertiary analysis processing unit-   52: code analysis unit-   53: number-of-zero-runs/group number recognition unit-   54: additional bit output unit-   61: quaternary analysis processing unit-   62: code analysis unit-   63: number-of-zero-runs/group number recognition unit-   64: additional bit output unit-   111: code input unit-   112: internal buffer-   113: front marker analysis unit-   114: final marker analysis unit-   125: frequency conversion unit-   130: reverse zigzag scan unit-   140: dequantization unit-   150: IDCT unit

1. An image decoding device comprising a Huffman decoding unitconfigured to decode compressed image data, the compressed image databeing compressed by a Huffman encoding process, the compressed imagedata having a structure in which Huffman codes and pieces of variablelength code data are connected continuously, each Huffman code encodingzero run information and group number information, the pieces ofvariable length code data being subsequent to the respective Huffmancodes, each of the pieces of variable length code data having anadditional bit handled as a unit, wherein the Huffman decoding unitinclude a code analysis unit configured to analyze the pieces ofvariable length code data sequentially received, and sequentiallyrecognize and output pieces of zero run information and group numberinformation relating to the pieces of variable length code data, and afrequency conversion unit configured to sequentially generate pieces ofcoefficient information based on the pieces of zero run information andgroup number information sequentially output from the code analysisunit, and output the pieces of coefficient information, and the codeanalysis unit includes an input control unit configured to collectivelysend a plurality of pieces of variable length code data, a primaryanalysis processing unit configured to process a first piece of receivedvariable length code data without applying a restriction, recognize zerorun information, group number information, and additional bitinformation relating to the first piece of received variable length codedata, and output the recognized zero run information and additional bitinformation to the frequency conversion unit, and a continuous analysisprocessing unit configured to process one or more pieces of variablelength code data subsequent to the piece of variable length code dataprocessed by the primary analysis processing unit, when a correspondingpiece of variable length code data in the one or more pieces of variablelength code data is variable length code data targeted for apredetermined process, perform a process to recognize zero runinformation, group number information, and additional bit informationrelating to the corresponding piece of variable length code data in theone or more pieces of variable length code data, and output therecognized zero run information and additional bit information to thefrequency conversion unit, and when the corresponding piece of the oneor more pieces of variable length code data is not the variable lengthcode data targeted for the predetermined process, perform a process todiscard the corresponding and subsequent pieces of variable length codedata in the one or more pieces of variable length code data, and thensend, to the input control unit, a signal for sending data subsequent tothe variable length code data having been through the recognitionprocess.
 2. The image decoding device according to claim 1, wherein thecontinuous analysis processing unit is configured to sequentiallyprocess the plurality of pieces of variable length code data, and applya more strict restriction on a piece of variable length code datalocated more backward in the plurality of pieces of variable length codedata with regard to the variable length code data targeted for thepredetermined process.